#include<stdlib.h>
#include<stdio.h>
#define SIZE 6



typedef struct{
    int data;
    int cur;
}component;


// 备用链表，管理未使用的空间
// arr[0]为表头
void reverse(component *arr){
    for(int i=0;i<SIZE;i++){
        arr[i].data = -1;
        if(i==SIZE-1){
            arr[i].cur = 0;
        }
        else{
            arr[i].cur = i + 1;
        }   
    }
}

int give(component *arr){
    int i=arr[0].cur;
    if(i){
        arr[0].cur = arr[i].cur;
    }
    return i;
}

int init(component *arr){
    reverse(arr);
    int body=give(arr);
    int temp=body;
    for(int i=1;i<4;i++){
        int j=give(arr);
        arr[body].cur = j;
        arr[j].data=i;
        temp=j;
    }
    arr[temp].cur=0;
    return body;
}

void show(component *arr, int body){
    int temp=body;
    while(arr[temp].cur){
        printf("%d,%d ",arr[temp].data,arr[temp].cur);
        temp=arr[temp].cur;
    }
    printf("%d,%d\n",arr[temp].data,arr[temp].cur);

}


int main(){
    component arr[SIZE];
    int body=init(arr);
    printf("静态链表为：\n");
    show(arr, body);
    return 0;
}